package com.scy.java.set;

import java.util.HashSet;

//获取学生对象
public class HashValueTest {
    public static void main(String[] args) {
//        //创建学生对象
//        Student stu1 = new Student("许涛涛", 18);
//        System.out.println("stu1的Hash值："+stu1.hashCode());//990368553
//        //通个对象多次掉用的hashCode()值是相同的
////        for (int i = 0; i < 10; i++) {
////            System.out.println("stu1的Hash值："+stu1.hashCode());//990368553
////        }
//        Student stu2 = new Student("许涛涛", 18);
//        System.out.println("stu2的Hash值："+stu2.hashCode());//1828972342
//        //结合上术两个对象所得的hash值得出，默认情况下不同对象的哈希值是不相同
//        //若要相同就要重写Object的equals()hashCode()方法
//
//
//        String str1 = new String("abc");
//        String str2 = "abc";
//        System.out.println(str1.equals(str2));//true
//        System.out.println(str1.hashCode());//96354
//        System.out.println(str2.hashCode());//96354
//        //由上得知String重写了父类的equals() hashCode()方法
//        //若想让两个对象的哈希值相同，需要重写Object的equals()hashCode()方法


        //Set集合创建方式
        HashSet<Object> set = new HashSet<>();
        set.add("张三");
        set.add("李四");
        set.add("王五");
        set.add("马六");
        set.add("田七");
        set.add("钱八");
        set.add("赵九");
        //字符串重写了hashCode()方法，因此得到两个元素为相同元素
        set.add("李四");//不允许出现重复元素
        System.out.println(set);
        System.out.println("-----------------");
        HashSet<Student> hashSet = new HashSet<>();
        //像集合中添加学生对象
        hashSet.add(new Student("许涛涛",18));
        hashSet.add(new Student("杨丹雪",20));
        hashSet.add(new Student("杨丹雪",20));
        hashSet.add(new Student("唐僧",20));
        hashSet.add(new Student("孙悟空",2000));
        System.out.println(hashSet);
        System.out.println(hashSet.size());


    }
}
